package com.jt.config;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import redis.clients.jedis.*;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Configuration
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {
    //    @Value("${redis.host}")
//    private String host;
//    @Value("${redis.port}")
//    private Integer port;
//    @Bean
//    public Jedis jedis() {
//        return new Jedis(host, port);
//    }
    // 分片机制配置
//    @Value("${redis.nodes}")
//    private String nodes;
//    @Bean
//    public ShardedJedis shardedJedis() {
//        nodes = nodes.trim();
//        List<JedisShardInfo> shards = new ArrayList<>();
//        String[] nodeArray = nodes.split(",");
//        for (String strNode : nodeArray) {
//            String host = strNode.split(":")[0];
//            int port = Integer.parseInt(strNode.split(":")[1]);
//            JedisShardInfo info = new JedisShardInfo(host, port);
//            shards.add(info);
//        }
//        return new ShardedJedis(shards);
//    }
    // 哨兵模式
//    @Value("${redis.sentinel}")
//    private String sentinel;
//    @Bean
//    public JedisSentinelPool jedisSentinelPool() {
//        Set<String> sentinels = new HashSet<>();
//        sentinels.add(sentinel);
//        return new JedisSentinelPool("mymaster", sentinels);
//
//    }
    // 集群模式
    @Value("${redis.clusters}")
    private String clusters;
    @Bean
    public JedisCluster jedisCluster() {
        Set<HostAndPort> nodes = new HashSet<>();
        String[] nodesArray = clusters.split(",");
        for (String node : nodesArray) {
            String host = node.split(":")[0];
            int port = Integer.parseInt(node.split(":")[1]);
            HostAndPort hp = new HostAndPort(host, port);
            nodes.add(hp);
        }
        return new JedisCluster(nodes);

    }
}

